10 !++++++++++++++++++++!
20 !     SKY RESCUE     !
30 !   BY JOHN BEHNKE   !
40 !  REQUIRES X-BASIC  !
50 !   AND A JOYSTICK   !
60 !VERSION 3.0 03-24-85!
70 !++++++++++++++++++++!
80 REM
90 REM
100 CALL CLEAR :: CALL SCREEN(2) :: FOR A=0 TO 14 :: CALL COLOR(A,15,1) :: NEXT A :: DISPLAY AT(1,10):"SKY RESCUE"
110 RANDOMIZE :: CALL COLOR(9,16,1)
120 !CALL COLOR(14,10,1,9,6,1)  !FOR COLOR TV/MONITOR
130 DEF FR=INT(RND*3)+20
140 DEF FC=INT(RND*11)+11
150 DISPLAY AT(4,1):"THREE PEOPLE HAVE BEEN": :"KIDNAPPED BY TERRORISTS.": :"RESCUE THEM WITH YOUR PLANE": :
160 DISPLAY AT(10,1):"BY SHOOTING OUT THE WALLS": :"AND PICKING THEM UP. AFTER": :"YOU RESCUE ALL THREE"
170 DISPLAY AT(16,1):"CAPTIVES, TAKE THEM HOME": :"BY FLYING OUT THE RIGHT SIDE": :"OF THE SCREEN. ALSO, DO NOT": :"HIT OR SHOOT THE MISSILES!"
180 DISPLAY AT(24,1):" PRESS FIRE BUTTON TO START"
190 CALL CHAR(136,"FFFFFFFFFFFFFFFFFFC3A59999A5C3FF0F0F0F0FFFFFFFFFFFFFFFFF0F0F0F0F")
200 CALL CHAR(128,"18FFFFFF18183C3C0E0ECEFFFFCE0E0E3C3C1818FFFFFF18707073FFFF737070")
210 CALL SPRITE(#1,131,16,13,200,0,-4)
220 CALL KEY(1,B,C)
230 CALL SOUND(-100,110,30,110,30,600,30,-4,0)
240 IF C=0 THEN 220 ELSE CALL DELSPRITE(#1)
250 CALL CLEAR :: RANDOMIZE :: DIM E(8),F(8),G(8),H(8) :: FOR A=1 TO 8 :: READ E(A),F(A),G(A) :: NEXT A
260 DATA -4,0,128,-4,4,132,0,4,129,4,4,133,4,0,130,4,-4,134,0,-4,131,-4,-4,135
270 FOR A=1 TO 8 :: READ H(A) :: NEXT A
280 DATA 0,2,4,6,8,6,4,2
290 CALL CHAR(120,"001C7EFFFFFF6E0000389CDEF4707CEE00")
300 CALL CHAR(132,"327F3E1E7FF772202072F77F1E3E7F32044EEFFE787CFE4C4CFE7C78FEEF4E04")
310 CALL CHAR(140,"AA55AA55AA55AA550000001818000000183C997E18182466")
320 CALL CHAR(96,"07070F3C78B81020E0E0F03C1E1D0804")
330 CALL CLEAR :: J=3 :: W,V=0 :: I=1
340 DISPLAY AT(1,10):"SKY RESCUE"
350 CALL HCHAR(5,1,136,32) :: CALL HCHAR(24,1,136,32) :: CALL VCHAR(1,31,136,96) :: DISPLAY AT(3,1):" SCORE: 0               "
360 DISPLAY AT(4,1):"zzzzzzzzzzzzzzzzzzzzzzzzzzzz"
370 CALL HCHAR(22,1,136,64) :: DISPLAY AT(18,1):"      "
380 DISPLAY AT(19,1):"                                                                                "
390 CALL HCHAR(10,30,138) :: CALL HCHAR(14,30,139) :: CALL VCHAR(11,31,140,3) :: CALL VCHAR(11,32,140,3) :: FOR A=1 TO I
400 CALL VCHAR(20,8+A,137,3) :: CALL VCHAR(20,25-A,137,3) :: CALL HCHAR(18-A,9,137,16) :: NEXT A
410 FOR A=1 TO 3
420 ROW=FR :: COL=FC
430 CALL GCHAR(ROW,COL,TEMP) :: IF TEMP=142 THEN 420
440 CALL HCHAR(ROW,COL,142)
450 NEXT A
460 CALL PATTERN(#1,121)
470 CALL SPRITE(#1,129,12,50,30) :: K=3
480 FOR A=1 TO I+1 :: CALL SPRITE(#A+2,96,15,192,RND*254+1,-4-I,4+I) :: NEXT A
490 HIT=0
500 CALL JOYST(1,L,M) :: IF M=4 THEN K=K+1 :: IF K=9 THEN K=1
510 IF M=-4 THEN K=K-1 :: IF K=0 THEN K=8
520 CALL MOTION(#1,E(K),F(K))
530 CALL PATTERN(#1,G(K))
540 CALL SOUND(-4000,110,30,110,30,600+10*H(K),30,-4,H(K))
550 CALL POSITION(#1,N,O) :: CALL GCHAR((N+7)/8,(O+7)/8,P)
560 IF P=142 THEN 850
570 IF P=140 THEN 870
580 CALL COINC(ALL ,HIT)
590 IF P<>32 OR HIT THEN 730
600 CALL KEY(1,B,C) :: IF C=0 THEN 500
610 CALL SOUND(-75,-5,0)
620 CALL SOUND(-4000,110,30,110,30,600+10*H(K),30,-4,H(K))
630 CALL SPRITE(#2,141,16,N+E(K)*3,O+F(K)*3,E(K)*1.6,F(K)*1.6) :: Q=K :: FOR A=3 TO 11 :: CALL JOYST(1,L,M) :: IF M=4 THEN K=K+1 :: IF K=9 THEN K=1
640 IF M=-4 THEN K=K-1 :: IF K=0 THEN K=8
650 CALL PATTERN(#1,G(K)) :: CALL MOTION(#1,E(K),F(K)) :: CALL POSITION(#1,N,O) :: CALL GCHAR((N+7)/8,(O+7)/8,P) :: IF P=142 THEN 850
660 IF P=140 THEN 870
670 CALL COINC(ALL ,HIT)
680 IF P<>32 OR HIT THEN 730
690 CALL POSITION(#2,R,S) :: CALL GCHAR((R+7)/8,(S+7)/8,P) :: IF P=137 THEN 840
700 IF P<>32 THEN 720
710 NEXT A
720 CALL DELSPRITE(#2) :: GOTO 500
730 CALL SOUND(-1000,-7,0) :: QWERT=4 :: CALL LOCATE(#1,N-(E(K)*2),O-(F(K)*2))
740 P=32
750 CALL POSITION(#1,T,U)
760 CALL MOTION(#1,6,F(QWERT)*(RND*4)) :: CALL SOUND(-200,-3,30-T/7,110,20)
770 CALL PATTERN(#1,G(QWERT)) :: QWERT=QWERT+1 :: IF QWERT=7 THEN QWERT=4
780 CALL SPRITE(#T/9+2,120,16,T,U)
790 CALL POSITION(#1,T,U) :: IF T<170 THEN 760
800 CALL PATTERN(#1,121)
810 CALL MOTION(#1,0,0) :: CALL SOUND(-1000,-6,0) :: FOR QWERT=1 TO 100 :: NEXT QWERT
820 CALL DELSPRITE(ALL) :: J=J-1 :: CALL HCHAR(3,24+J*2,32) :: IF J=0 THEN 900 ELSE 470
830 IF J=0 THEN 900
840 CALL DELSPRITE(#2) :: CALL SOUND(-50,-2,0) :: CALL HCHAR((R+7)/8,(S+7)/8,32) :: V=V+100 :: DISPLAY AT(3,8)SIZE(9):V :: GOTO 540
850 IF W=3 THEN 540
860 W=W+1 :: CALL SOUND(-50,1000,0) :: CALL HCHAR((N+7)/8,(O+7)/8,32) :: GOTO 540
870 IF W<3 THEN 730
880 W=0 :: V=V+5000*I :: DISPLAY AT(3,8)SIZE(10):V :: I=I+1 :: IF I>6 THEN I=6
890 GOTO 370
900 DISPLAY AT(7,1)SIZE(27):"      G A M E  O V E R" :: DISPLAY AT(10,1):" TYPE <ENTER> TO PLAY AGAIN"
910 CALL KEY(0,B,C) :: IF C=0 THEN 910
920 IF B=13 THEN 330 ELSE CALL CLEAR :: END
